package com.godliu.file.demo.utils;

import java.util.regex.Pattern;

public class StringCheck {

    /**
     * 通过正则表达式验证字符串是否符合
     *
     * @param reg   正则表达式
     * @param value 被验证的字符串
     * @return 验证匹配返回 true ,不匹配返回 false
     */
    public static boolean check(String reg, String value) {
        return Pattern.compile(reg).matcher(value).matches();
    }

    /**
     * 验证邮箱格式
     *
     * @param value 被验证的字符串
     * @return
     */
    public static boolean isEmail(String value) {
        String regex = "^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
        return check(regex, value);
    }

    /**
     * 验证IP格式
     *
     * @param value 被验证的字符串
     * @return
     */
    public static boolean isIP(String value) {
        String num = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";
        String regex = "^" + num + "\\." + num + "\\." + num + "\\." + num + "$";
        return check(regex, value);
    }

    /**
     * 验证URL格式
     *
     * @param value 被验证的字符串
     * @return
     */
    public static boolean isURL(String value) {
        String regex = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
        return check(regex, value);
    }

    /**
     * 验证电话号码
     *
     * @param value 被验证的字符串
     * @return
     */
    public static boolean isTelphone(String value) {
        String regex = "^(\\d{3,4}-)?\\d{6,8}$";
        return check(regex, value);
    }

    /**
     * 验证邮政编码
     *
     * @param value 被验证的字符串
     * @return
     */
    public static boolean isPost(String value) {
        String regex = "^\\d{6}$";
        return check(regex, value);
    }

    /**
     * 32位通用ID验证
     *
     * @param value
     * @return
     */
    public static boolean isID(String value) {
        String regex = "^[A-Za-z0-9]{1,32}$";
        return check(regex, value);
    }
}
